import scala.collection.mutable.ArrayBuffer

object SingletonDemo {
  def main(args: Array[String]) {
    //单例对象，不需要new，用【类名.方法】调用对象中的方法
    val factory1 = SessionFactory
    val factory2 = SessionFactory
    println(factory1)
    println(factory2)
    println(SessionFactory)
    val session1 = factory1.getSession()
    println(session1)
    val session2 = SessionFactory.getSession()

    println(session2)
  }
}

//单例的，只有一个实例
object SessionFactory{
  //该部分相当于java中的静态块
  var counts = 5
  val sessions = new ArrayBuffer[Session]()
  while(counts > 0){
    sessions += new Session
    counts -= 1
  }

  //在object中的方法相当于java中的静态方法
  def getSession(): Session ={
    sessions.remove(0)
  }
}

class Session{

}